﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        int aa;
        int bb;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: 이 코드는 데이터를 'friendDataSet.a' 테이블에 로드합니다. 필요한 경우 이 코드를 이동하거나 제거할 수 있습니다.
            this.aTableAdapter.Fill(this.friendDataSet.a);

        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                string connectionString = "provider=Microsoft.JET.OLEDB.4.0;"
                                        + "data source = "
                                        + Application.StartupPath
                                        + @"\friend.mdb";

                string commandString = "select * from a";

                OleDbDataAdapter DBAdapter
                    = new OleDbDataAdapter(commandString, connectionString);

                OleDbCommandBuilder myCommandBuilder
                    = new OleDbCommandBuilder(DBAdapter);

                DataSet DS = new DataSet();

                DBAdapter.Fill(DS, "a");       // 데이터 소스에서 데이터를 DataSet에 불러옴
                // DataSet과 DataTable 이름을 사용하여 데이터 소스(DB위치)의 행과 일치하도록 DataSet의 행을 추가하거나 새로 고칩니다.

                DataTable aTable = DS.Tables["a"];  // DataSet에 포함된 테이블 가져오기                         
                DataRow newRow = aTable.NewRow();   // DataTable에 행을 추가
                aa = int.Parse(textBox2.Text);      // 과목점수1,2를 정수형으로 변환
                bb = int.Parse(textBox3.Text);
              
                // 각 텍스트박스에 입력한 내용을 각 행에 저장
                newRow["a"] = textBox1.Text;        // 학번
                newRow["b"] = aa;        // 국어

                newRow["c"] = bb;                   // 영어

                aTable.Rows.Add(newRow);   // DataTable에 속한 행의 컬렉션을 가져와서 DataRowCollection 개체에 추가합니다

                DBAdapter.Update(DS, "a");  // DataSet에서 수행한 변경을 데이터 소스에 다시 보내서 연결제공

                dataGridView1.DataSource = DS.Tables["a"].DefaultView;
                     
                this.textBox1.Clear();
                this.textBox2.Clear();
                this.textBox3.Clear();         
            }
            catch (DataException DE)
            {
                MessageBox.Show(DE.Message);
            }
            catch (Exception DE)
            {
                MessageBox.Show(DE.Message);
            }          
        }

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {       
            string connectionString = "provider=Microsoft.JET.OLEDB.4.0;"
                                       + "data source = "
                                       + Application.StartupPath
                                       + @"\friend.mdb";

            string commandString = "select * from a";

            OleDbDataAdapter DBAdapter
                = new OleDbDataAdapter(commandString, connectionString);

            OleDbCommandBuilder myCommandBuilder
                = new OleDbCommandBuilder(DBAdapter);

            DataSet DS = new DataSet();

            DBAdapter.Fill(DS, "a");

            DataTable aTable = DS.Tables["a"];

            if (e.RowIndex < 0)   // 레코드가 하나도 없을 때
            {
                return;
            }

            else if (e.RowIndex > aTable.Rows.Count - 1)   // 빈 셀을 클릭했을 떄
            {
                MessageBox.Show("해당하는 데이터가 존재하지 않습니다.");
                return;
            } //데이터가 있으면 뿌려주고 없으면 리턴해주고

            DataRow currRow = aTable.Rows[e.RowIndex];

            textBox1.Text = currRow["a"].ToString(); // 모두 문자로 바꿔줌
            textBox2.Text = currRow["b"].ToString();
            textBox3.Text = currRow["c"].ToString();
          
        }

        private void button2_Click(object sender, EventArgs e)
        {

            try
            {
                string connectionString = "provider=Microsoft.JET.OLEDB.4.0;"
                                          + "data source = "
                                          + Application.StartupPath
                                          + @"\friend.mdb";

                string commandString = "select * from a";

                OleDbDataAdapter DBAdapter
                    = new OleDbDataAdapter(commandString, connectionString);

                OleDbCommandBuilder myCommandBuilder
                    = new OleDbCommandBuilder(DBAdapter);

                DataSet DS = new DataSet();

                DBAdapter.Fill(DS, "a");

                DataTable aTable = DS.Tables["a"];
                DataColumn[] PrimaryKey = new DataColumn[1];
                PrimaryKey[0] = aTable.Columns["a"];
                aTable.PrimaryKey = PrimaryKey;

                DataRow currRow = aTable.Rows.Find(textBox1.Text);
                currRow.Delete();

                DBAdapter.Update(DS.GetChanges(DataRowState.Deleted), "a");
                dataGridView1.DataSource = DS.Tables["a"].DefaultView;
            }
            catch (DataException DE)
            {
                MessageBox.Show(DE.Message);
            }
            catch (Exception DE)
            {
                MessageBox.Show(DE.Message);
            }
        }
    }
}